package com.kly.smartbi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.kly.smartbi.model.entity.PostThumb;
import com.kly.smartbi.model.entity.User;
import com.kly.smartbi.model.vo.PostVO;
import com.kly.smartbi.model.vo.UserVO;

import java.util.List;

/**
 * 帖子点赞服务
 *
 * @author <a href="https://github.com/liyupi">程序员鱼皮</a>
 * @from <a href="https://yupi.icu">编程导航知识星球</a>
 */
public interface PostThumbService extends IService<PostThumb> {

    /**
     * 点赞
     *
     * @param postId
     * @param loginUser
     */
    void doPostThumb(long postId, User loginUser);

    /**
     * 设置是否已点赞
     * @param postVO
     */
    void setHasThumb(PostVO postVO);

    /**
     * 点赞 zset 实现
     *
     * @param postId
     */
    void doPostThumbByZSet(long postId);


    /**
     * 设置是否已点赞 zset 实现
     * @param postVO
     */
    void setHasThumbByZSet(PostVO postVO);


    /**
     * 获取用户点赞排行榜
     */
    List<UserVO> getUserThumbRank(Long postId);

    /**
     * 帖子点赞（内部服务）
     *
     * @param userId
     * @param postId
     * @return
     */
    int doPostThumbInner(long userId, long postId);
}
